
/**
 * 挂载区段，该区域的内容在以下情况会被加载一次
 * 1.游戏在远程服务器上的内存使用达到阈值，会被清空内存并重置global对象
 * 2.修改游戏文件
 */

require("TickStreamLoader");
//Registry.room(Adapter.load("roomAdapter"));

Registry.rooms([{
    name:"W14S3",
    use:{
        shard:R.SHARD_3,
    },
    define:{
        position:"W14S3",
        timeDilation:0,
    },
},
]);

Registry.structures([{
    name:"W14S3_Spawn1",
    use:{
        type:R.STRUCTURE_SPAWN,
    },
    define:{
        structureData:{
            spawnName:"Spawn1"
        },
        event:{
            onSpawn:function(creep){
                console.log("开始Spawn:"+creep.name);
            },
            onSpawning:function(){//正在spawning读条时将会持续触发

            },
            onSpawned:function(){//Spawn完成后触发一次

            },
            ERR_NAME_EXISTS:function(){//准备Spawn时出现重复名称的Creep时触发

            },
            ERR_RCL_NOT_ENOUGH:function(){//控制器级别不足以控制该Spawn时触发

            }
        }
    }
},
]);

Registry.creeps([{
    name:"Upgrader",
    use:{
        spawn:R.W14S3_Spawn1,
    },
    define:{
        body:[WORK,MOVE,CARRY],
        event:{
            onSpawning:function(){//正在spawning读条时将会持续触发

            },
            onSpawned:function(){//Spawn完成后触发一次

            }
        }
    },
},{
    name:"Test",
    use:{
        spawn:R.W14S3_Spawn1,
    },
    define:{
        body:[MOVE],
        event:{
            onJoinPlan:function(){//加入生产计划时触发，通常在Creep死后，但有些情况下Creep死后不会立即被纳入生产计划
                console.log("TEST加入队列");
            },
            onSpawn:function(spawning){//Spawn时会触发一次
                console.log("开始生产Test,剩余时间"+spawning.remainingTime);
            },
            onSpawining:function(spawing){//Spawn时会持续触发
                console.log("正在生产Test");
            },
            onSpawned:function(spawing){//Spawn完成时触发一次
                console.log("Test生产完成");
            }
        }
    }
},
]);
// //行为注册
// Registry.states([{
//     name:"升级",
//     conduct:function(data){
//         let creep = data.creep;
//         Drive(creep,"导航",{creep:creep,target:data.target});
//         Drive(creep,"采集",{creep:creep,target:data.target});
//     },
//     catch:function(e){//intent出错回调，catch不会传递给上一个行为

//     }
// },{
//     name:"导航",
//     conduct:function(data){
//         let creep = data.creep;
//         const path = creep.pos.findPathTo(data.target);
//         for(let i = 0 ; i<path.length ; i++){
//             intent(creep.id,'move',path[i]);
//         }
//     }
// },{
//     name:"采集",
//     conduct:function(data){
//         let creep = data.creep;
//         intent(creep.id,'harvest',data.target.id);
//     }
// }
// ]);



console.log("TickStream缓存完毕 耗时："+Game.cpu.getUsed());
/**
 * 运行区段，每Tick执行一次
 */
module.exports.loop = function(){
    TickStream();

    Game.spawns.Spawn1.displayPool();

    require("temp")();
    //console.log("Runtime 耗时："+Game.cpu.getUsed());
}



